Floating point type multiplier circuit with compensation for over-flow and under-flow in multiplication of numbers in two&#39;s compliment representation

ABSTRACT

According to the present invention, a normalized floating point type multiplier circuit including a multiplier for mantissa&#39;s multiplication and an adder for exponent&#39;s addition is equipped with both a detector circuit for detecting over- and under-flows and a compensation circuit for compensating the output of said multiplier without any programming, when the over- and under-flows are detected, so that the multiplying speed can be improved.

BACKGROUND OF THE INVENTION

(1) Field of the Invention

The present invention relates to a floating point type multiplier circuit and, more particularly, to a floating point type multiplier circuit to be used in a high speed digital signal processor which aims at real time access of data having a wide dynamic range (i.e., the maximum amplitude that can be taken by the data).

(2) Description of the Prior Art

A floating point type multiplier circuit is constructed of a fixed point multiplier for exclusive use of mantissa arithmetic and an adder for exclusive use of exponent arithmetic. Specifically, if two numbers to be multiplied are expressed by A₁ =M₁ ·2^(e).sbsp.1 and A₂ =M₂ ·2^(e).sbsp.2, the result of the multiplication is expressed by A₀ =A₁ ·A₂ =M₁ ·M₂ ·2^(e).sbsp.1^(+e).sbsp.2 so that the multiplication of M₁ ·M₂ and the addition of e₁ +e₂ are performed. Here, M₁ and M₂ designate mantissas, and e₁ and e₂ designate exponents. In the multiplication of floating points, the mantissas of two inputs are so normalized as to maintain the effective length maximum. Specifically, "1" and "0" result in case the bit appearing next to the MSB (which is the abbreviation of "Most Significant Bit") is positive and and negative, respectively, and the point is located between the MSB and the second bit.

In case such multiplier is constructed of a digital circuit of binary number, the bit length of the mantissa and exponent is fixed for convenience of the circuit construction. Therefore, since the result of the multiplication, i.e., the product has to be expressed by a predetermined bit length, there arises a problem of "flow" (e.g., over-flow or under-flow).

In case the result of the multiplication is to be normalized, moreover, the mantissa is shifted so that the exponent has to be accordingly added and subtracted. If, in this case, the exponent fails to fall within the range expressed by a formal bit-length, the problem of the flow also results.

If the flow takes place in the mantissa and the exponent in that way, there has been adopted according to the prior art a method in which the flow is detected by flag and is compensated by a programming. As a result, it takes a considerable time to execute the program for compensating the over-flow, thus raising a defect that a high speed arithmetic cannot be accomplished. Especially in a real time access system, in which the input and output have to be processed with an identical time relationship, such as a communication equipment, a higher speed signal processor becomes necessary, and the speed-up of the multiplier especially taking the time is required.

SUMMARY OF THE INVENTION

It is, therefore, an object of the present invention to realize a floating point multiplication the flow of which is processed at a high speed without any programming.

Another object of the present invention is to realize a circuit which can promptly process the flow occurring in the floating point multiplication.

In order to achieve the above-mentioned objects, according to the present invention, there is provided a multiplier circuit for multiplying the two numbers of a floating point composed of mantissa and exponent of a predetermined bit length, which circuit is characterized in that a flow detector is provided at the mantissa or exponent of an output so that a flow compensation circuit may be driven by the signal detected by the flow detector.

The above-mentioned and other features and objects of the present invention will become more apparent with reference to the following description taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram showing the bit construction of input and output data in a floating point multiplication;

FIG. 2 is a block diagram showing the construction of one embodiment of a floating point type multiplier circuit according to the present invention;

FIG. 3 is a circuit diagram showing blocks 2, 4 and 14 of FIG. 2;

FIG. 4 is a circuit diagram showing a block 3 of FIG. 2; and

FIG. 5 is a circuit diagram showing blocks 6, 7, 8 and 15 of FIG. 2.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Before entering into the description of the embodiments, the concept of the present invention will be first explained in the following. FIG. 1 shows the bit constructions of two numbers A₁ and A₂ to be multiplied and their product A=A₁ ·A₂. If the mantissa and exponent of each number are designated at M and e, respectively, the two numbers are expressed by A₁ =M₁ ·2^(e).sbsp.1 and A₂ =M₂ ·2^(e).sbsp.2, and the product is expressed by A=M·2^(e) (i.e., the true value). The suffixes of the respective symbols discriminate the respective numbers. In the floating point multiplication, the mantissas M₁ and M₂ of the two numbers A₁ and A₂ are normalized so as to maximize the effective lengths. Moreover, the MSB indicates the sign, and the point is located between the MSB and the next bit. Therefore, when a binary number is expressed by a two's complement expression, the mantissas M₁ and M₂ fall within the ranges defined by the following inequalities: ##EQU1##

From the construction (which expresses the mantissa and exponent) of a multiplier circuit, on the other hand, the bit lengths are constructed of predetermined bit lengths m and n (e.g., m=12 and n=4 in the cases of the two numbers A₁ and A₂ of FIG. 1), respectively. In case there is no limit to the bit construction, the product A (i.e., the true product value) of those two input numbers A₁ and A₂ is expressed by a mantissa having 24 bits and an exponent having five bits. For the convenience of the circuit construction, however, the output of the multiplier circuit is constructed of the same mantissa of m (=12) bits and the same exponent of n (=4) bits as those of the numbers A₁ and A₂, as is expressed by A₀ =M₀ ·2^(e).sbsp.0 of FIG. 1. The point of the output at that time is located subsequent to the MSB. As a result, the following flow takes place:

(1) Exponent's Over-Flow: The exponent e becomes equal to or larger than 2^(n-1).

(2) Exponent's Under-Flow: The exponent e becomes equal to or smaller than -2^(n-1).

(3) Mantissa's Over-Flow: When both the two numbers A₁ and A₂ are -1, their product is the binary number of 1.0000 - - -, notwithstanding that its true value is 1, in case the arithmetic of the two's complement expression is performed, so that its value is mistaken to be -1 because the MSB takes the value "1".

According to the floating point type multiplier circuit of the present invention, the above-mentined problem of the over-flow compensate by means of a circuit for detecting the respective over-flows and a compensation circuit having the following functions but made operative not to program the over-flow detected:

(1') When the exponent's over-flow takes place, the exponent e₀ is wholly set at the maximum 2^(n-1) -1 that can be displayed by n bits, and the mantissa M₀ is obtained by shifting (or carrying) the mantissa one bit to the left when the exponent e is 2^(n-1) and when the mantissa M is not normalized. In other cases, the mantissa M is compensated without any change in the sign (MSB) bit to the mantissa M₀ (e.g., 0.11-1 in the positive case or 1.00-0 in the negative case) which takes the maximum absolute value.

(2') For the under-flow of the exponent, the mantissa is shifted (or carried down) to the right by the (e_(s) -e) bits which is determined by subtracting the true exponent value e from a predetermined exponent e_(s) which can be expressed by the exponent. The exponent is compensated to e_(s). For example, the above-mentioned e_(s) =-2^(n-1) is held, and the mantissa is shifted (or carried) to the right by the (-2^(n-1) -e) bits. Alternatively, as will be described in the embodiments of the present invention, the mantissa may be shifted to the right by (α-e) bits in an adder for adding the result of the floating point multiplication and another number, if the exponent of the above-specified another number is designated at α.

(3') For the mantissa's over-flow, either of the following means is taken:

(3-1)' The first means is to shift (or carry down) the mantissa one bit to the right and to add one to the exponent; and

(3-2)' The second means is to express the mantissa M₀ in 2⁰ -2⁻(m-1) and to perform no compensation of the exponent. Since this means can be used with a exponent's over-flow compensation circuit, as will be explained in a later-described embodiment, the circuit construction can be made more advantageous than the first means.

FIG. 2 is a block diagram showing the construction of one embodiment of the floating point type multiplier circuit of the present invention constructed on the basis of the concept thus far described. The circuit of the present embodiment is constructed of first and second arithmetic circuits I and II. The first arithmetic circuit I is a circuit for detecting the floating point multiplication and the over-flow and for performing the compensations of an exponent and a mantissa due to the mantissa's over-flow. The second arithmetic circuit II is a circuit for performing the compensations of an exponent and a mantissa due to the exponent's under-flow. In the present embodiment, moreover, the compensation circuit due to the exponent's under-flow, i.e., the second arithmetic circuit II is made to act as an arithmetic circuit for adding the output of the first arithmetic circuit I and another input A₃ (which is composed of a mantissa l₉ and an exponent l₁₀) and is made operative to perform the floating point arithmetic and the fixed point arithmetic. The operations of the respective circuit constructions will be described hereinafter.

A floating point arithmetic multiplier 1 is fed with signals, which correspond to the mantissas M₁ and M₂ of the two numbers A₁ and A₂ having such bit constructions as are shown in FIG. 1, as input signals l₁ and l₂, respectively. The multiplier 1 feeds out the result of multiplication M₀ as an output signal l₅ (including the case of the flow). On the other hand, the signals which correspond to the exponents e₁ and e₂ of the above two numbers A₁ and A₂ are fed as input signals l₃ and l₄, respectively, to a floating point arithmetic type adder 2. The adder 2 feeds out the result of addition e as an output signals l₆ (including the case of the flow).

Numeral 4 indicates an overflow detector and compensation circuit for detecting the flow of the exponent e and for compensating the exponent for the exponent's over-flow. The overflow detector and compensation circuit 4 feeds out not only signals C₈, C_(MO) and C_(MU) respectively indicating that the exponent e is 2^(n-1), not less than 2^(n-1) (in the case of the exponent's over-flow) and smaller than -2^(n-1) (in the case of the exponent's under-flow) when the exponent indicating bit length is n (=4 in the embodiment) but also the compensated exponent e₀ when the exponent e is not less than 2^(n-1).

Numeral 14 indicates a change over circuit for effecting the interchange between the floating point multiplication and the fixed point multiplication in response to a control signal B. The change over circuit 14 is provided to use the circuit of the present embodiment as a fixed point arithmetic circuit, too.

FIG. 3 shows the circuit constructions of the adder 2, the over flow detector and compensation circuit 4 and the change over circuit 14 thus far described. In FIG. 3: l₃ -2³, l₃ -2², l₃ -2¹ and l₃ -2⁰ indicate the four bit signals belonging to the input A₁ and having the exponent e₁ ; l₄ -2³, l₄ -2², l₄ -2¹ and l₄ -2⁰ indicate the four bit signals belonging to the input A₂ and having the exponent e₂ ; l₆ -2³, l₆ -2², l₆ -2¹ and l₆ -2⁰ indicate the output signals of the adder 2, i.e., the four bit signals having the exponent e; and C₃ indicates a carry signal for under three-bit addition. An OR circuit 16 and an AND circuit 17 are circuits for detecting that the exponent e of the product A is not less than 2.sup. n-1 (in the case of the exponent's over-flow) so that the output C_(MO) becomes "1" when the l₃ -2³ and l₄ -2³ are "0" and the carry signal C₃ is "1" (i.e., C_(MO) =(l₃ -2³)+(l₄ -2³)·C₃). An OR circuit 18 and an AND circuit 19 are circuits for detecting that the exponent e is not more than -8 (in the case of the exponent's under-flow) so that the output C_(MU) becomes "1" when the l₃ -2³ and l₄ -2³ are "1" and the C₃ is "0". An AND circuit 20 is a circuit for detecting that the exponent e is 2^(n-1) (e.g., 8 for n=4) so that it feeds out "1" when the C_(MO) is "1" and all of the l₆ -2², l₆ -2¹ and l₆ -2⁰ are "0" (i.e., C_(MO) ·(l₆ -2²)·(l₆ -2¹)·(l₆ -2⁰)="1"). An AND circuit 21 and OR circuits 22, 23 and 24 compensate the exponent e to e₀ ="0111" when the exponent is not less than 2^(n-1) (=8). The floating and fixed point arithmetic change over circuit 14 is used, when the arithmetic types are changed, so that the control signal B is "1" in the case of the floating point arithmetic thereby to render AND circuits 25, 26 and 27 conductive thereby to pass the signals C_(MU), C_(MO) and C₈ therethrough. In the case of the fixed point arithmetic, the control signal B is "0" so that the signals C_(MU), C_(MO) and C₈ are blocked.

FIG. 4 is a circuit diagram of an overflow detector and compensation circuit 3 of FIG. 2, which receives as its inputs the signals C_(MO) and C₈ shown in FIG. 3, with the MSB l₁ -2⁰ and l₂ -2⁰ of the two input signals l₁ and l₂ to be multiplied, and with the signals l₅ -2⁰, l₅ -2⁻¹, - - -, and l₅ -2⁻¹⁵ having 16 bits and generated, i.e., the output C_(MU) of the multiplier 1. A logic circuit 29 is composed of inverters 30, 33 and 35, exclusive OR circuits 31 and 39, NAND circuits 32 and 37, NOR circuits 34 and 38 and an OR circuit 36 and judges the various states of the result of multiplication thereby to turn on and off AND gates 41 to 44. OR circuits 51 to 54 extract the outputs of those AND gates and feed out bit signals l₇ -2⁻¹, l₇ -2⁻², - - - l₇ -2⁻¹⁵ which express the mantissas compensated. The output l₇ -2⁰ of an inverter 40 becomes the MSB signal of the mantissa.

By the actions of the circuits thus far described with reference to FIGS. 3 and 4, the C_(MO) becomes "1", when the exponent e is not less than 8 (i.e., in the case of the exponent's over-flow), so that the exponents e₀ (e.g., l₈ -2³, l₈ -2², l₈ -2¹ and l₈ -2⁰) become "0111" (+7). For the mantissa: as shown in FIG. 4, when the C_(MO) is "1" and is not normalized, the NAND circuit 37 takes "1" to turn on AND gates 41-1, 42-1, - - -, and 44-1; and, when the MSB l₅ -2⁰ is "0" or "1", the output bits l₇ -2⁰, l₇ -2⁻¹, l₇ -2⁻², - - -, and l₇ -2¹⁵ having their mantissas compensated take the values having the maximum absolute values, such as, 0.11111 - - - 1 or 1.000 - - - 0, for the mantissa inputs other than -1.

However, in case the exponent e is 2^(n-1) (=8) and the mantissa is not normalized, i.e., when the C_(MO) and C₈ are "1" and when the signs of the l₅ -2⁰ and l₅ -2⁻¹ are identical, AND gates 41-3, 42-3 and so on are turned on by the logic circuit 29 thereby to shift the mantissa only one bit to the left.

For the exponent e defined by -8≦e<7, no over-flow takes place so that the output l₆ of the adder 2 of the exponent is extracted as l₈ (l₈ -2³, l₈ -2², - - -, and l₈ -2⁰), whereby the exponent is not normalized.

Now, in the foregoing respective cases, the mantissa's over-flow takes place when both the mantissas M₁ and M₂ of the two inputs A₁ and A₂ are "1.000 - - - 0" (-1). This detection is performed by the NAND circuit 32 of FIG. 4 so that, when it is detected that the (l₁ -2⁰)·(l₂ -2⁰)·(l₅ -2⁰) is "1", the compensated mantissa outputs l₇ -2⁰, l₇ -2⁻², - - -, and l₇ -2⁻¹⁵ take "0.1111 - - - 1" (=2⁰ -2¹⁵).

Next, the compensation circuit in the case of the exponent's under-flow, i.e., when the exponent e is smaller than -2^(n-1) will be described in the following.

When the arithmetic result of the floating point multiplier is to be directly extracted, it is sufficient to shift (or carry down) the mantissa to the right by (-2^(n-1) -e) bits for the minimum value -2^(n-1) that can be indicated by the exponent. However, since a third input A₃ is generally added to the result of the first arithmetic circuit I in most cases, the embodiment shown in FIG. 2 is directed to the case in which the compensation of the exponent's under-flow is performed by the second arithmetic circuit II in the course of the addition of the third input A₃ (l₉ and l₁₀).

The output A of the multiplier I and the third input A₃ are numbers expressed in floating points and are expressed by the following Equations:

    A=M.sub.β ·2.sup.β ; and

    A.sub.3 =M.sub.α ·2.sup.α.

Now, if it is assumed that the two numbers A and A₃ in the relationship of αηβ are added, the result of addition Z is expressed by the following Equation:

    Z=A+A.sub.3 =[M.sub.α +M.sub.β ·2.sup.-(α-β) ]·2.sup.α.

In FIG. 2, the mantissas M.sub.β and M.sub.α are applied as l₇ and l₉, respectively, to a mantissa input but change over circuit 5. The exponents β and α are applied as l₈ and l₁₀, respectively, to an exponent compensation circuit 6, an exponent comparison circuit 11 and a mantissa change over circuit 13. The exponent comparison circuit 11 compares the magnitudes of the above exponents α and β and adds the result of comparison l₁₇ as the signal l₁₈ through an exponent comparison compensation circuit 12 to the above change over circuits 5 and 13 and to a subtractor 7. Here, l₁₇ =0 holds for αηβ. The above mantissa input bus change over circuit 5 generates the mantissa M.sub.α, which corresponds to the larger exponent α, at l₁₆ and the mantissa M.sub.β, which corresponds to the smaller exponent β, at l₁₄ and applies it to a shift circuit 9. On the other hand, the exponent input bus change over circuit 13 generates the larger exponent α and adds it to another circuit (although not shown).

The subtractor 7 receives the exponents α and β in two's complement expression thereby to calculate |α-β| and feed out the arithmetic result in binary expression. This output is then applied through a shift compensation circuit 8 and an arithmetic change over circuit 15 to the above shift circuit 9 thereby to shift the mantissa M.sub.β to the right by the (α-β) bit length. The signal l₁₅, which is shifted by the shift circuit 9, is added to the signal l₁₆ (=M.sub.α) by the fixed point adder and subtractor thereby to feed out the result of addition of M.sub.α +M.sub.β ·2⁻(α-β).

In the construction thus far described, the exponent compensation circuit 6, the exponent comparison compensation circuit 12 and a shift compensation circuit 8 are also made operative to perform the exponent compensating function for the exponent's under-flow, when this exponent's under-flow takes place in the exponent M.sub.β of the aforementioned floating point multiplication arithmetic circuit I, i.e., when the C_(MU) is "1", and their concrete constructions will be described with reference to FIG. 5.

Prior to the description of the circuit of FIG. 5, its operating principle will be described.

Here, the exponent of the output of the arithmetic circuit I is designated at β={β₃, β₂, β₁, β₀ }, and the true value of the exponent is designated at e. Incidentally, β indicates the output in the case of the under-flow. On the other hand, the exponent of the other input is designated at α={α₃, α₂, α₁, α₀ } (which is expressed by l₁₀).

The exponent's under-flow takes place for β₃ ·C_(MU) ="1". At this time, since e<-8 and β≧0 in the two's complement expression of four bits, e<β. As a result, when C_(MU) is 1, the compensation of the exponent comparison has to be performed. In order to arrange the exponents of the two inputs, it is necessary to deduce (α-e), which is expressed by the following Equation:

    α-e=α-(-16+β)=(α+8)-(-8+β)     (3).

Here, since α and β are defined by the following conditions: ##EQU2## the following inequalities hold:

    α+8>-8+β                                        (8);

and

    1≦α-e≦23                               (9).

On the other hand, since the input data l₁₃ to the mantissa's shift right circuit 9 has to be restricted by an equality of 0≦l₁₃ ≦15, the following compensations are required:

    for α-e<16, l.sub.13 =α-e                      (10);

and

    for α-e≧16, l.sub.13 =15                      (11).

If the above Equations are expressed by logic symbols for the circuit construction, the terms (α+8) and (-8+β) of the Equation (3) are expressed by the following Equations:

    (α+8)={(α.sub.3 ⊕1)α.sub.2 α.sub.1 α.sub.0 }

    ={(α.sub.3 ⊕C.sub.MU)α.sub.2 α.sub.1 α.sub.0 }(12);

where { } implies a series of bits; (α₃ ⊕C_(MU)) and α₀ imply the MSB and LSB, respectively; and where the Equation (12) is not in the two's complement expression but in the binary expression; and

    (-8+β)={(1+0)β.sub.2 β.sub.1 β.sub.0 (∵β.sub.3 =0)

    ={(β.sub.3 +C.sub.MU)β.sub.2 β.sub.1 β.sub.0 (13),

where this Equation is in the two's complement expression. If x and y given by the following Equations are used,

    x=(C.sub.MU ⊕α.sub.3)=α.sub.3              (14)

    y=(C.sub.MU +β.sub.3)=0                               (15)

the conditions for the Equations (10) and (11) are such that the Equation (10) holds, when C defined by the following Equations is "0", whereas the Equation (11) holds when the C is "1":

    C={x·y+(x⊕y)·C.sub.2 }·C.sub.MU (16)

    =x·C.sub.2 ·C.sub.MU                     (17).

In FIG. 5: signals l₈ -2³, l₈ -2², l₈ -2¹ and l₈ -2⁰ correspond to the above β₃, β₂, β₁ and β₀ ; and signals l₁₀ -2³, l₁₀ -2², l₁₀ -2¹ and l₁₀ -2⁰ correspond to the above α₃, α₂, l₁ and l₀. An exclusive OR circuit 55 performs the calculation of the term (α₃ ⊕C_(MU)) appearing in the Equation (12), and an OR circuit 56 performs the calculation of the term (β₃ +C_(MU)) appearing in the Equation (14). The exponent comparison compensation circuit 12 turns on a switch S₁ and off a switch S₂, when C_(MU) =1, thereby to reduce the signal l₁₈ to "0". This is reversed for C_(MU) ="0" so that the signal l₁₈ becomes "l₁₇ ". The substractor 7 feeds out the value (α-e). In the shift compensation circuit 8, the condition C of the foregoing Equation (17) is judged by an AND circuit 57 so that the output "1" is fed out for the shift larger than 16. Hence, the value 15 is set as the shift signal l₁₃ for α-e≧16, whereas the value (α-e) is set as the signal l₃ for α-e<16.

Although the foregoing description has been directed to the case in which the compensation of the exponent's underflow is performed during the addition and subtraction of the remaining input A₃, it is sufficient that the data of the mantissa l₉ of the input signal A₃ is set at 0 whereas the data l₁₀ of the same is set at -8, in case the result of the multiplication of the two input data A₁ and A₂ is to be directly extracted as the output of the second arithmetic circuit II. Specifically, (000 - - - 0)×2⁻⁸ =0 holds, and this is the output added by 0 so that the product A₀ of the two inputs A₁ and A₂ is obtained. 

We claim:
 1. An arithmetic circuit for compensation of overflow and underflow in the processing of numbers in two's complement representation comprising first circuit means having a multiplier for multiplying the mantissas of first and second floating point numbers in two's compliment representation and an adder for adding the exponents of said first and second floating point numbers; and second circuit means for adding the outputs of said multiplier and said adder to a third floating point number in two's complement representation; wherein said first circuit means includes first detector means connected to said adder for detecting over- and under-flow conditions of the output of said adder, first compensation means connected to said adder for compensating the output of said adder for a detected over-flow condition prior to application of said output of said second circuit means, second detector means connected to said multiplier means for detecting over-flow of the output of the multiplier resulting from multiplication of said mantissas and second compensation means connected to said multiplier for compensating said over-flow of the output of said multiplier prior to application of said output to said second circuit means; and wherein said second circuit means includes third compensating means responsive to the output of said first detector means for compensating the output of said adder in said first circuit means for a detected underflow condition as part of the adding operation of said second circuit means.
 2. Arithmetic circuit according to claim 1, wherein the number of bits by which said adder can represent a result is n (n is an integer not less than 2) and said third number has an exponent α, said third floating point compensation means including means for shifting the output of said multiplier to the right by (α-e) bits (e is the true value of the output of said adder) when said first detector detects an exponent under-flow condition at the output of said adder.
 3. Arithmetic circuit according to claim 2, wherein said first compensating means includes means for setting the outputs of said adder to 2^(n-1) -1 when said first detector means detects that the output of said adder is more than 2^(n-1) or is 2^(-n-1), and said second compensating means includes means for shifting the output of said multiplier one bit to the left when said first detector means detects that the output of said adder if 2^(n-1) and when the output of said multiplier is not normalized, and means for maximizing the absolute value of the output of said multiplier without changing the sign bit of the same when the output of said adder, is not less than 2^(n-1) +1 or when the output of said multiplier is normalized and the output of said adder is 2^(-n-1).
 4. Arithmetic circuit according to claims 2 or 3, wherein said second compensation means includes means for shifting the output of said multiplier one bit to the right and for adding one to the output of said adder when said second detector means detects an overflow condition in the multiplication of said mantissas. 